package cn.anc.aonicardv.util;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;

import cn.anc.aonicardv.Constant;
import cn.anc.aonicardv.R;


/**
 * function : 视图工具类.
 * <p/>
 */
@SuppressWarnings("unused")
public class ViewUtil {
    /**
     * 显示对应状态视图
     *
     * @param viewState  视图状态(四种互斥) :<br/>
     *                   加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                   空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                   出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                   数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView   数据视图布局
     * @param noDataView 无数据视图布局
     */
    public static void showContentLayout(int viewState, View noDataView, View dataView) {
        showContentLayout(viewState, noDataView, dataView, 0, null, null);
    }

    /**
     * 显示对应状态视图
     *
     * @param viewState       视图状态(四种互斥) :<br/>
     *                        加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                        空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                        出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                        数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView        数据视图布局
     * @param noDataView      无数据视图布局
     * @param onClickListener 无数据视图时点击监听器(eg : 网络出错点击重新加载)
     */
    public static void showContentLayout(int viewState, View noDataView, View dataView, OnClickListener onClickListener) {
        showContentLayout(viewState, noDataView, dataView, 0, null, onClickListener);
    }

    /**
     * 显示对应状态视图
     *
     * @param viewState  视图状态(四种互斥) :<br/>
     *                   加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                   空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                   出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                   数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView   数据视图布局
     * @param noDataView 无数据视图布局
     * @param hintStr    无数据视图布局中央图片下方提示文字
     */
    public static void showContentLayout(int viewState, View noDataView, View dataView, String hintStr) {
        showContentLayout(viewState, noDataView, dataView, 0, hintStr, null);
    }

    public static void showContentLayout1(int viewState, View noDataView, View dataView, String hintStr) {
        showContentLayout(viewState, noDataView, dataView, 1, hintStr, null);
    }

    /**
     * 显示对应状态视图
     *
     * @param viewState       视图状态(四种互斥) :<br/>
     *                        加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                        空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                        出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                        数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView        数据视图布局
     * @param noDataView      无数据视图布局
     * @param hintStr         无数据视图布局中央图片下方提示文字
     * @param onClickListener 无数据视图时点击监听器(eg : 网络出错点击重新加载)
     */
    public static void showContentLayout(int viewState, View noDataView, View dataView, String hintStr, OnClickListener onClickListener) {
        showContentLayout(viewState, noDataView, dataView, 0, hintStr, onClickListener);
    }

    /**
     * 显示对应状态视图
     *
     * @param viewState  视图状态(四种互斥) :<br/>
     *                   加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                   空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                   出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                   数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView   数据视图布局
     * @param noDataView 无数据视图布局
     * @param imgResId   无数据视图布局中央图片
     * @param hintStr    无数据视图布局中央图片下方提示文字
     */
    public static void showContentLayout(int viewState, final View noDataView, View dataView, int imgResId, String hintStr) {
        showContentLayout(viewState, noDataView, dataView, imgResId, hintStr, null);
    }

    /**
     * 显示对应状态视图
     *
     * @param viewState       视图状态(四种互斥) :<br/>
     *                        加载中视图 : <code>Const.LAYOUT_LOADING</code><br/>
     *                        空数据视图 : <code>Const.LAYOUT_EMPTY</code><br/>
     *                        出错啦视图 : <code>Const.LAYOUT_ERROR</code><br/>
     *                        数据视图 : <code>Const.LAYOUT_DATA</code>
     * @param dataView        数据视图布局
     * @param noDataView      无数据视图布局
     * @param imgResId        无数据视图布局中央图片
     * @param hintStr         无数据视图布局中央图片下方提示文字
     * @param onClickListener 无数据视图时点击监听器(eg : 网络出错点击重新加载)
     */
    public static void showContentLayout(int viewState, final View noDataView, final View dataView, final int imgResId, final String hintStr, final OnClickListener onClickListener) {
        ImageView defaultImg = (ImageView) noDataView.findViewById(R.id.layout_no_data_view_img);
        TextView displayMsg = (TextView) noDataView.findViewById(R.id.layout_no_data_view_layout_hint_msg);
        defaultImg.setImageResource(imgResId);
        displayMsg.setText(hintStr);
        switch (viewState) {
            case Constant.LAYOUT_NETWORK_ERR:// 显示网络失败
                dataView.setVisibility(View.GONE);
                noDataView.setVisibility(View.VISIBLE);

                break;
            case Constant.LAYOUT_LOADING:// 显示加载中视图
                dataView.setVisibility(View.GONE);
                noDataView.setVisibility(View.VISIBLE);
                break;
            case Constant.LAYOUT_EMPTY:// 显示空数据视图
                dataView.setVisibility(View.GONE);
                noDataView.setVisibility(View.VISIBLE);

                break;
            case Constant.LAYOUT_ERROR:// 显示出错视图
                dataView.setVisibility(View.GONE);
                noDataView.setVisibility(View.VISIBLE);

                break;
            case Constant.LAYOUT_DATA:// 显示数据视图
                noDataView.setVisibility(View.GONE);
                dataView.setVisibility(View.VISIBLE);
                break;
            default:
                throw new IllegalArgumentException("viewState wrong!");
        }
    }

}
